using System;
using System.Collections;
using System.Data;
using BEGDC.CC.Entity;

namespace BEGDC.CC.BL.CCFlow.OCV
{
    /// <summary>
    /// Summary description for ICR.
    /// </summary>
    public interface IOCV : ICCFlow
    {
        void Save(Application app, CustomerInfo customer, BusinessPurpose business, Topic topic, SalesTeamInfo salesInfo,
            LogisticalInfo logist, PaymentInfo payment, IList costmerAttendee, IList ALAttendee, IList sites, IList cost, IList contract);
        void Request(Application app, Employee lvApprover);
        void Assign(long flowID, string nextTransition, string employeeNo, int appID, string comment);
        void Check(long flowID, string nextTransition, string comment);
        void DepartmentFNCApprove(long flowID, string nextTransition, string comment);
        void DepartmentHeadApprove(long flowID, string nextTransition, string comment);
        void CostCenterHeadApprove(long flowID, string nextTransition, string comment);
        void DepartmentVPApprove(long flowID, string nextTransition, string comment);
        void SSMEEVPApprove(long flowID, string nextTransition, string comment);
        void SubmitLVLeadApproval(long flowID, int appID, string nextTransition, Employee nextLvApprover, string stepName, string comment);
        void CODApprove(long flowID, string nextTransition, string comment);
        void CODVPApprove(long flowID, string nextTransition, string comment);
        void Summary(long flowID, string nextTransition, string comment);
        void Close(long flowID, string nextTransition, string comment);
        void DrawBack(long flowID, string comment);
        void Query(long flowID, string step, string comment);
        void ReplyQuery(long flowID, string comment);
        void Suspend(long flowID, string comment);
        void Resume(long flowID, string comment);
        void Archive(long flowID);
        void SubmitSurvey(Application App, BEGDC.CC.Entity.CustomerSurvey survey, IList AnswerList);
        void SaveSurvey(Application App, BEGDC.CC.Entity.CustomerSurvey survey, IList AnswerList);

        void Callback(long flowID, string comment);
        void Cancel(long flowID, string comment);
        void SaveCloseApp(Application App, IList cost, int paymentId);
        void ReAssign(long flowID, string employeeNo);
        void CopyOCV(int appId);

        #region Get Infomation
        BEGDC.CC.Entity.Application GetApplication(int AppID);
        BEGDC.CC.Entity.CustomerSurvey GetCustomerSurvey(int AppID);
        BEGDC.CC.Entity.LogisticalInfo GetLogisticalInfo(int AppID);
        DataTable GetSurveyQuestions(string appType, string Type, bool Enable);
        DataTable GetSurveyAnswer(int SurveyId);
        IList GetSurveyAnswerList(int SurveyId);
        IList GetSurveyQuestionList();
        #endregion

        #region ReportToEmploye
        /// <summary>
        /// ReportTo Employee Approved
        /// </summary>
        void ReportToEmployeeApproved(Application app);
        #endregion
    }
}
